//P1090 AC
//P6033 [NOIP2004 提高组] 合并果子 加强版 60 卡常数
#include<bits/stdc++.h>
using namespace std;
#define int long long 
template<typename T>inline void read(T &x)
{
	T f=1;x=0;char c;
	for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
	for(;isdigit(c);c=getchar())x=x*10+(c^48);
	x*=f;
}
int to[1000006];
signed main(){
	int a ;read(a);
	for (int i = 1; i <= a; ++i) {
		int x;
		read(x);
		to[x] ++;
	}
	vector<int> vec(a);
	for (int i = 1; i <= 100000; ++i) {
		while(to[i]) {
			to[i] --;
		}
		vec.push_back(i);
	}
	int res = 0,used = 0;
	reverse(vec.begin(),vec.end());
	while(vec.size() >1){
		int t1 = vec.back();
		vec.pop_back();
		int t2 = vec.back();
		vec.pop_back();
		if(vec.size()>=1) used += t1 + t2;
		vec.push_back(t1+t2);
//		int t2 = q1.front();
//		q1.pop();
	}
	printf("%lld",res +used);
	return 0;
}
//#include<bits/stdc++.h>
//#include<bits/extc++.h>
//
//using namespace std;
//
////#include<ext/pb_ds/assoc_container.hpp>
////#include<ext/pb_ds/tree_policy.hpp>//用tree
////#include<ext/pb_ds/hash_policy.hpp>//用hash
////#include<ext/pb_ds/trie_policy.hpp>//用trie
////#include<ext/pb_ds/priority_queue.hpp>//用priority_queue
//#define int long long
//
////
////cc_hash_table<int,bool> h;
////gp_hash_table<int,bool> h;
//
////char *p1,*p2,buf[100000];
////#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
////int read()
////{
////	int x=0,f=1;
////	char ch=nc();
////	while(ch<48||ch>57)
////	{
////		if(ch=='-')
////			f=-1;
////		ch=nc();
////	}
////	while(ch>=48&&ch<=57)
////		x=x*10+ch-48,ch=nc();
////	return x*f;
////}
//template<typename T>inline void read(T &x)
//{
//	T f=1;x=0;char c;
//	for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
//	for(;isdigit(c);c=getchar())x=x*10+(c^48);
//	x*=f;
//}
//inline void write(int x)
//{
//	if(!x){putchar(48);putchar('\n');return;}
//	static int sta[45],tp;
//	for(tp=0;x;x/=10)sta[++tp]=x%10;
//	for(;tp;putchar(sta[tp--]^48));
//	putchar('\n');
//}
//signed main()
//{
//	ios::sync_with_stdio(0);
//	cin.tie(0);
//	int n ; read(n);
//	
//	//cin >> n;
//	
//	__gnu_pbds ::priority_queue<int,greater<int>> pq;
//	/*其中的TAG为类型，有以下几种：
//	  pairing_heap_tag
//	  thin_heap_tag
//	  binomial_heap_tag
//	  rc_binomial_heap_tag 
//	  binary_heap_tag
//	  其中pairing_help_tag最快*/
//	int x;
//	while(n--){
//		read(x);
//		//cin >> x;
//		pq.push(x);
//		
//	}
//	//	int res = pq.top();
//	//	pq.pop();
//	int used  = 0;
//	while(pq.size()>1){
//		//		res += pq.top();
//		
//		int p1 = pq.top();
//		pq.pop();
//		
//		//		cout << p1 << endl;
//		int p2 = pq.top();
//		//		cout << p2 << endl;
//		pq.pop();
//		if(pq.size() >= 1 ) used += p1 + p2;
//		pq.push(p1+p2);
//		
//	}
//	write(pq.top() + used);
//	//cout << pq.top()+used;
//	//	cout << res + pq.top() <<endl;
//	return 0;
//}

//P6033 [NOIP2004 提高组] 合并果子 加强版 
// WA  
//#include<bits/stdc++.h>
//using namespace std;
//#define int long long
//const int MAXN = 1e7+7;
//int n[MAXN]={0};
//signed main()
//{
//	ios::sync_with_stdio(0);cin.tie(0);
//	int N;
//	cin >> N;
//	int x;
//	while(N--){
//		cin >>x;
//		n[x]++;
//	}
//	int res = 0; int flag = 0;
//	int temp =0;
//	for(int i=0;i<=MAXN;i++){
////		if(flag == 2){
////			res += temp;
////			flag = 1;
////			temp = 0;
////		}
//		if(n[i] > 0){
//			 temp += i;// 1 2 4 8
//			 n[i]--;
//			 flag ++; // flag = 1 flag = 2
//			 i --;
//		}
//		if(flag == 2){
//			res += temp;// 2 6 14
////			temp = res;
//			flag --;
//		}
//	}
////	cout << temp << res<<endl;
//	cout << res;
//	return 0;
//}

